#pragma once

#include "HJMacros.h"

typedef enum HJPluginNofityType
{
    HJ_PLUGIN_NOTIFY_NONE = 0,
    HJ_PLUGIN_NOTIFY_EOF = 1,

    HJ_PLUGIN_NOTIFY_ERROR_MUXER_INIT = 100,
    HJ_PLUGIN_NOTIFY_ERROR_MUXER_WRITEFRAME = 101,

    HJ_PLUGIN_NOTIFY_ERROR_CODEC_INIT = 110,
    HJ_PLUGIN_NOTIFY_ERROR_CODEC_RUN = 111,
    HJ_PLUGIN_NOTIFY_ERROR_CODEC_GETFRAME = 112,

    HJ_PLUGIN_NOTIFY_ERROR_AUDIOFIFO_ADDFRAME = 120,

    HJ_PLUGIN_NOTIFY_ERROR_CAPTURER_GETFRAME = 130,

    HJ_PLUGIN_NOTIFY_ERROR_DEMUXER_INIT = 140,
    HJ_PLUGIN_NOTIFY_ERROR_DEMUXER_GETFRAME = 141,
    HJ_PLUGIN_NOTIFY_DEMUXER_EOF = 142,

    HJ_PLUGIN_NOTIFY_VIDEORENDER_FRAME = 150,
    HJ_PLUGIN_NOTIFY_VIDEORENDER_FIRST_FRAME = 151,
    HJ_PLUGIN_NOTIFY_VIDEORENDER_EOF = 152,

    HJ_PLUGIN_NOTIFY_ERROR_AUDIORENDER_INIT = 160,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_START_PLAYING = 161,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_STOP_PLAYING = 162,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_START_BUFFERING = 163,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_STOP_BUFFERING = 164,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_EOF = 165,
    HJ_PLUGIN_NOTIFY_AUDIORENDER_FRAME = 166,

    HJ_PLUGIN_NOTIFY_AUDIOCACHE_DURATION = 170,
    HJ_PLUGIN_NOTIFY_AUTODELAY_PARAMS = 171,

    HJ_PLUGIN_NOTIFY_PLUGIN_SETINFOS = 172,

} HJPluginNofityType;
HJEnumToStringFuncDecl(HJPluginNofityType);

typedef enum HJPluginInformationType
{
    HJ_PLUGIN_SETINFO_NONE = 0,

    HJ_PLUGIN_SETINFO_PLUGIN_status = 1,

    HJ_PLUGIN_SETINFO_AUDIODECODER_audioDuration = 100,
    HJ_PLUGIN_SETINFO_AUDIORENDER_audioDuration = 101,
    HJ_PLUGIN_SETINFO_DROPPING_audioDuration = 102,

    HJ_PLUGIN_SETINFO_VIDEODECODER_frameSize = 200,
    HJ_PLUGIN_SETINFO_VIDEORENDER_frameSize = 201,

    HJ_PLUGIN_SETINFO_DROPPING_videoKeyFrames = 300,

    HJ_PLUGIN_SETINFO_DEMUXER_mediaType = 400,

    HJ_PLUGIN_GETINFO_NONE = 1000,

    HJ_PLUGIN_GETINFO_DEMUXER_canDeliverToOutputs = 1100,
    HJ_PLUGIN_GETINFO_VIDEODECODER_canDeliverToOutputs = 1101,
    HJ_PLUGIN_GETINFO_DROPPING_canDeliverToOutputs = 1102

} HJPluginInformationType;
